home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / Common / General Tools / Headers / XList.h < prev    next >
Text File  |  1999-07-13  |  2KB  |  59 lines

  1.  
  2. #pragma once
  3.  
  4. #include "nodeClass.h"
  5. #include "ListSocket.h"
  6.  
  7.  
  8.  
  9.  
  10.  
  11. class XList : protected nodeClass, public ListSocket {
  12.  
  13.         
  14.         
  15.     public:
  16.                                     XList( nodeClass* inParent );
  17.                                     
  18.         //    Post:    This inserts <inNodeToAdd> within this node, after the current insertion point (ie, at mInsertionPt and mInsertionDepth).
  19.         //    Note:    0 for a depth means the root level.
  20.         //    Note:    The insertion pt is modified/maintained to follow after <inNodeToAdd> was placed
  21.         void                        DoBestInsert( nodeClass* inNodeToAdd );
  22.  
  23.         //    Post:    Sets the current insertion point before the node <inInsertPt>.
  24.         //    Note:    If <inInsertPt> is NULL, the insert pt is at the end of the list
  25.         void                        SetInsertPtBefore( nodeClass* inInsertPt );
  26.         
  27.         //    *** nodeClass overrides--see nodeClass.h for fcn docs ***
  28.         //    Post:    Same as nodeClass::findSubNode() except that caching brings running time to O(1) (vs. O(n)) if
  29.         //            the previous call was an adjacent node
  30.         virtual nodeClass*            findSubNode( long inNodeNum );
  31.                     
  32.         //    Post:    Same as nodeClass::findSubNode() except that caching brings running time to O(1) (vs. O(n)) if
  33.         //            the previous call was an adjacent node
  34.         virtual long                findSubNode( nodeClass* inNodePtr );
  35.  
  36.         //    Post:    Returns the cell number that <inCellNum> is hierarcharaly inside (similar to nodeClass's GetParent()).
  37.         //    Note:    If the specified cell is at the root level (ie it has no real visible parent) then 0 is returned.
  38.         //    Note:    If the specified cell does not exist, -1 is returned.
  39.         long                        GetParent( long inCellNum );
  40.  
  41.         //    *** ListSocket overrides--see ListSocket.h for fcn docs ***
  42.         virtual bool                CheckInsertPt( long& ioNodeNum, long& ioDepth )                                { return nodeClass::CheckInsertPt( ioNodeNum, ioDepth );        }
  43.         virtual void                MoveSelected( long inAboveCell, long inDepth )                                { nodeClass::MoveSelected( inAboveCell, inDepth );    }
  44.         virtual void                DeleteSelected()                                                            { nodeClass::DeleteSelected();                    }
  45.         virtual XLongList*            ManageClick( long inCell, bool inShift, bool inCmd, bool inDeselectRest );
  46.         virtual void                SetSelected( long inElementNum, bool isSelected );
  47.         virtual bool                IsSelected( long inElementNum );
  48.         virtual long                NumCells();
  49.  
  50.         
  51.     protected:
  52.         virtual void                UpdateCounts( int inShallowChange );
  53.  
  54.         
  55.         nodeClass*                    mCachedNode;        //    NULL if Dirty
  56.         long                        mCachedNodeNum;        //    Deep instance of mCachedNode
  57.  
  58. };
  59.